package com.minimalist.lindi.service;

import com.minimalist.common.config.mybatis.bo.PageResp;
import com.minimalist.common.entity.lindi.po.LindiEnterpriseRegistration;
import com.minimalist.common.entity.lindi.vo.enterpriseregistration.LindiEnterpriseRegistrationAuditVO;
import com.minimalist.common.entity.lindi.vo.enterpriseregistration.LindiEnterpriseRegistrationQueryVO;
import com.minimalist.common.entity.lindi.vo.enterpriseregistration.LindiEnterpriseRegistrationVO;
import com.mybatisflex.core.service.IService;
import jakarta.validation.constraints.NotNull;

/**
 * 林地指标交易平台_企业注册表 服务层。
 *
 * @author 11987
 * @since 2025-03-31
 */
public interface LindiEnterpriseRegistrationService extends IService<LindiEnterpriseRegistration>{

    /**
     * 新增企业注册信息
     *
     * @param enterpriseRegistrationVO LindiEnterpriseRegistrationVO 对象。
     */
    void addEnterpriseRegistration(LindiEnterpriseRegistrationVO enterpriseRegistrationVO);

    /**
     * 根据企业注册ID删除企业注册信息
     *
     * @param enterpriseRegistrationId 企业注册ID。
     */
    void deleteEnterpriseRegistrationByEnterpriseRegistrationId(@NotNull(message = "企业注册信息ID不能为空") Long enterpriseRegistrationId);

    /**
     * 根据企业注册ID更新企业注册信息
     *
     * @param enterpriseRegistrationVO LindiEnterpriseRegistrationVO 对象。
     */
    void updateEnterpriseRegistrationByEnterpriseRegistrationId(LindiEnterpriseRegistrationVO enterpriseRegistrationVO);

    /**
     * 分页查询企业注册信息列表
     *
     * @param queryVO LindiEnterpriseRegistrationQueryVO 对象。
     * @return 分页查询结果。
     */
    PageResp<LindiEnterpriseRegistrationVO> getPageEnterpriseRegistrationList(LindiEnterpriseRegistrationQueryVO queryVO);

    /**
     * 根据企业注册ID查询企业注册信息
     *
     * @param enterpriseRegistrationId 企业注册ID。
     * @return 查询结果。
     */
    LindiEnterpriseRegistrationVO getEnterpriseRegistrationByEnterpriseRegistrationId(@NotNull(message = "企业注册信息ID不能为空") Long enterpriseRegistrationId);

    /**
     * 审核企业注册信息
     *
     * @param enterpriseRegistrationId 企业注册ID。
     * @param status                   审核状态。
     */
    void auditEnterpriseRegistration(LindiEnterpriseRegistrationAuditVO auditVO);
}
